#include "Server.h"

int sock_server; // 服务器 套接字
int sock_client; // 客户端 套接字

// 声明函数
int tcp_server_init(const char *ip, in_port_t port)
{
  // 创建套接字
  sock_server = socket(AF_INET, SOCK_STREAM, 0);
  if (-1 == sock_server)
  {
    ERRLOG("创建套接字失败");
    exit(-1);
  }

  // 填写信息结构体
  // 使用的是 IPV4 网络信息结构体  不用使用通用信息结构体
  struct sockaddr_in server_addr;
  // 清空结构体
  memset(&server_addr, 0, sizeof(server_addr));
  // 确定协议 选择 IPV4
  server_addr.sin_family = AF_INET;
  // 端口号
  server_addr.sin_port = htons(port); // 端口号可以随意指定
                                      // IP地址
  server_addr.sin_addr.s_addr = inet_addr(ip);

  // 绑定
  if (-1 == bind(sock_server, (struct sockaddr *)&server_addr, sizeof(server_addr)))
  {
    ERRLOG("绑定出错");
    close(sock_server);
    exit(-1);
  }

  printf("开始监听\n");
  // 监听
  if (-1 == listen(sock_server, 1))
  {
    ERRLOG("监听失败");
    close(sock_server);
    exit(-1);
  }
  // 等待连接
  sock_client = accept(sock_server, NULL, NULL);
  printf("连接成功\n");

  // 返回套接字
  return sock_client;
}

void tcp_server_close(void)
{
  close(sock_server);
  close(sock_client);
  printf("关闭成功\n");
  return;
}
